// 导入express 
const express = require('express');

// 引入 express-session connect-mongo
const session = require('express-session');
const MongoStore = require('connect-mongo');

// 创建应用对象
const app = express();

app.use(session({
  name: 'sid', // 设置cookie的name 默认值是connect.sid
  secret: 'bowl-cake', // 参与加密的字符串(又称为签名) 加盐
  saveUninitialized: false, // 是否为每次请求都设置一个cookie用来存储session的id
  resave: true, // 是否在每次请求时重新保存session
  store: MongoStore.create({
    mongoUrl: 'mongodb://127.0.0.1:27017/bilibili', // 数据库的连接配置
  }),
  cookie: {
    maxAge: 1000 * 60 * 60 * 24 * 7, // 过期时间 7天
    httpOnly: true, // 只有服务器可以访问，开启后前端无法通过JS操作
  },
}));


app.get('/', function (req, res) {
  res.send('hello');
})


app.get('/login', function (req, res) {
  if (req.query.username === 'admin' && req.query.password === 'admin') {
    req.session.username = 'admin';
    req.session.uid = '258aefccc'
    // 成功响应
    res.send('登录成功');
  } else {
    // 失败响应
    res.send('登录失败');
  }
})

// session 的读取
app.get('/cart', function (req, res) {
  // 检测session是否存在用户数据
  if (req.session.username) {
    res.send(`购物车页面，欢迎您${req.session.username}`)
  } else {
    res.send('请先登录')
  }
})

// session 的销毁
app.get('/logout', function (req, res) {
  req.session.destroy(function (err) {
    if (err) {
      console.log(err);
    } else {
      res.send('注销成功');
    }
  })
})

// 启动服务
app.listen(3000, function () {
  console.log('启动服务');
  console.log('http://127.0.0.1:3000');
})